package com.cmc.cloud.cmclink.doc.api.document.emums;

import lombok.Getter;

import java.util.Arrays;
import java.util.List;

/**
 * @author 周贤
 * @date 2025/7/22
 */
public enum SiStatusEnum {
    /**
     * 草稿
     */
    BookingDraft("SI01", "草稿"),
    /**
     * SI 待审核
     */
    BookingProcessing("SI02", "SI 待审核"),
    /**
     * SI已确认
     */
    BookingPendingSpace("SI03", "SI已确认"),
    /**
     * 待确认 Draft 件
     */
    AwaitingMaterialUploaded("SI04", "待确认 Draft 件"),
    /**
     * 已确认 Draft 件
     */
    BookingConfirmed("SI05", "已确认 Draft 件"),
    /**
     * 提单准备好签发
     */
    BookingRejected("SI06", "提单已签发");

    @Getter
    private final String value;

    @Getter
    private final String label;

    SiStatusEnum(String value, String label) {
        this.value = value;
        this.label = label;
    }
    
    /**
     * 根据value返回对应的label
     * @param value 状态值
     * @return 对应的label，如果没有匹配的返回null
     */
    public static String getLabelByValue(String value) {
        for (SiStatusEnum status : values()) {
            if (status.getValue().equals(value)) {
                return status.getLabel();
            }
        }
        return null;
    }
    
    /**
     * 根据value返回对应的label，如果没有匹配的返回原值
     * @param value 状态值
     * @return 对应的label，如果没有匹配的返回原值
     */
    public static String getLabelByValueOrDefault(String value) {
        String label = getLabelByValue(value);
        return label != null ? label : value;
    }

    /**
     * 返回所有有效的状态
     */
    public static List<String> getValidStatus() {
        return Arrays.asList(BookingPendingSpace.getValue(), AwaitingMaterialUploaded.getValue(),BookingConfirmed.getValue(), BookingRejected.getValue());
    }
}
